例外創造了美的價值
Oscar Niemeyer
昨天提到我們要盡量避免使用到else
,或許不少人心中馬上就會有疑問是:那ternary operator也包含了else
的功能,是否便該拒之門外。
恰恰相反的是,大部分的ternary operator是可以被接受的。我們以ternary operator來重構昨天的例子:
// 不會被討厭的寫法
function squareOdd(n) {
return n % 2 === 0 ? n : n ** 2;
}
他的優點顯而易見的:非imperative、易懂易讀、簡潔。這麼好的東西為何不接受他。
值得注意的是,ternary的優勢只有在這種形式下才能被彰顯。有些人會發揮自以為是創意感,把ternary玩出花來:例如俄羅斯套娃版的ternaries,這時不僅代碼複雜性增高,else
的缺點也會在此暴露,是讓主管討厭同事抱怨的直達車。
談到switch
陳述句,大多數人不是「知道但就不想用」,不然就是避之惟恐不及。但實務上,還是有其用處的。
他最直覺的用處之一,就是大家一開始接觸他的那個用法:連續的if-else-if-else-if...
。此時,用簡潔、易讀、且更有執行效率的switch
不香嗎?事實上,React中的Redux便是switch
愛好者之一,幾乎都被用在其reducer中。
不用switch
的另外一個方法,便是將case-return 對用object的方式(key-value對)來表徵,這也不失為一個好作法。